1
Código como Datos: La Naturaleza Homoiconica de Elixir
AI019Lesson 10
00:00

La Naturaleza de la Homoiconicidad

Lenguaje homoiconico: Un lenguaje en el que la representación interna se expresa en el propio lenguaje. En Elixir, el código fuente no es solo texto; es una estructura de datos anidada conocida como el Árbol Sintáctico Abstracto (AST).

1. Reglas Lógicas de Representación

Elixir simplifica el AST representando los literales básicos como ellos mismos. Los átomos, números, listas (incluyendo listas de palabras clave), binarios y tuplas con dos elementos se representan internamente sin envolturas complejas.

iex> quote do: [do: 1]
[do: 1]
iex> quote do: "binarios"
"binarios"

2. Estructura de Tupla del AST

La mayoría de las transformaciones de código producen una tupla de tres elementos: {nombre_función, metadatos, argumentos}. Por ejemplo, una llamada a función como 1 + 2 se convierte en {:+, [line: 1], [1, 2]}. Esto permite al lenguaje tratar Código como Datos.

3. Macros: Diferir la Ejecución

Los macros son "una forma de diferir la ejecución de cláusulas al insertar código de nuevo en la representación interna de nuestro programa." Mientras que las funciones estándar evalúan los argumentos antes de llamar, los macros reciben el AST crudo, lo que permite la inyección de lógica antes de la compilación.

$$\text{Código Fuente} \xrightarrow{\text{Quote}} \text{Tupla AST} \xrightarrow{\text{Macro}} \text{AST Transformado}$$

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>